/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.vinisoft.gymwebapp.view;

import com.vinisoft.gymwebapp.model.entities.GymUsuario;
import com.vinisoft.gymwebapp.model.facades.GymRolFacade;
import com.vinisoft.gymwebapp.model.facades.GymUsuarioFacade;
import java.io.Serializable;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

/**
 *
 * @author root
 */
@Named("cambiaPasswd")
@ViewScoped
public class CambiaPasswd extends AbstractJSFManagedBean implements Serializable {
//
//@EJB
//private transient EmpleadosFacade empleadoFacade;
//
//@ManagedProperty(value = "#{SessionBean}")

    @Inject
    private SessionJSFManagedBean sessionBean;
//
    @EJB
    private GymUsuarioFacade usuarioFacade;
    @EJB
    private GymRolFacade rolFacade;

//
//private Cias compania;
    private GymUsuario usuario;
//
    private String passwdActual;
    private String passwd1;
    private String passwd2;

//
//public SessionJSFManagedBean getSessionBean()
//{
//    return sessionBean;
//}
//
//public void setSessionBean(SessionJSFManagedBean sessionBean)
//{
//    this.sessionBean = sessionBean;
//}
////
//public Cias getCompania()
//{
//    return compania;
//}
//
//public void setCompania(Cias compania)
//{
//    this.compania = compania;
//}
//
//public Empleados getEmpleado()
//{
//    return empleado;
//}
//
//public void setEmpleado(Empleados empleado)
//{
//    this.empleado = empleado;
//}
    public GymUsuario getUsuario() {
        return usuario;
    }

    public void setUsuario(GymUsuario usuario) {
        this.usuario = usuario;
    }

    public String getPasswdActual() {
        return passwdActual;
    }

    public void setPasswdActual(String passwdActual) {
        this.passwdActual = passwdActual;
    }

    public String getPasswd1() {
        return passwd1;
    }

    public void setPasswd1(String passwd1) {
        this.passwd1 = passwd1;
    }

    public String getPasswd2() {
        return passwd2;
    }

    public void setPasswd2(String passwd2) {
        this.passwd2 = passwd2;
    }

//
    @Override
    @PostConstruct
    protected void _init() {
        super._init();
//    compania = getSessionBean().getCompania();
//    empleado = getSessionBean().getEmpleado();
        usuario = sessionBean.getUsuario();
    }

    public String cambiarPasswd$action() {
        if (usuario != null) {
            if (!encriptarTexto(passwdActual).equals(usuario.getPassw())) {
                mostrarMensajeJSF(FacesMessage.SEVERITY_WARN, "La contraseña actual es incorrecta");
                return null;
            }
            usuario.setPassw(encriptarTexto(passwd1));
            usuarioFacade.edit(usuario);
            mostrarMensajeJSF(FacesMessage.SEVERITY_INFO, "Contraseña cambiada exitosamente");
        }
        return null;
    }

    private String encriptarTexto(String texto)  {
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("MD5"); // Inicializa MD5        
            byte[] resumen = messageDigest.digest(texto.getBytes()); // Genera el resumen MD5
            String s = "";
            for (int i = 0; i < resumen.length; i++) {
                s += Integer.toHexString((resumen[i] >> 4) & 0xf);
                s += Integer.toHexString(resumen[i] & 0xf);
            }
            return s;
        } catch (NoSuchAlgorithmException excpt) {
            return null;
        }
    }
}
